import { Provider } from '@nestjs/common';
import Redis from 'ioredis';

export const RedisProvider: Provider = {
  provide: 'REDIS_CLIENT',
  useFactory: () => {
    return new Redis({
      host: '127.0.0.1', // Redis 服务器地址
      port: 6379,        // Redis 端口
      // password: 'root', // 如果有密码，请取消注释
    });
  },
};

// Redis 键名常量
export const REDIS_KEYS = {
  CAPTCHA: 'captcha:',           // 验证码前缀
  USER_SESSION: 'user_session:',  // 用户会话前缀
  LOGIN_ATTEMPTS: 'login_attempts:', // 登录尝试次数前缀
  USER_TOKEN: 'user_token:',      // 用户token前缀
} as const;

// Redis 过期时间常量（秒）
export const REDIS_EXPIRE = {
  CAPTCHA: 60*5,        // 验证码5分钟过期
  USER_SESSION: 3600,  // 用户会话1小时过期
  LOGIN_ATTEMPTS: 10, // 登录尝试记录30分钟过期
  USER_TOKEN: 7200,    // 用户token 2小时过期
} as const; 